Infinity-Get-Room-Vars names a function, with lambda list (D U RECIPIENT/S):
Returns “room variables.”
Lisp GET-ROOM-VARS = JSON getRoomVars
This command requires no parameters.
In Romance I, the server had a library of free-form key-value pairs which were used to control each “room,” or screen, of the game.
These variables, which were usually edited using the special “Zookeeper” client by Eric Feilding, eventually metamorphosed into a library of very specific “room variables” as described herein.
We no longer support arbitrary key-value pairs; at this point, all room variables are specifically enumerated in the following documentation; however, future releases could expand this list, so conforming clients are required to accept and ignore unrecognized variables silently.
These room variables define the general environment.
The Sky. Consists of the background (sky) texture file as a URL, or, the position of a sky object such as the sun, a moon, or a cloud.
The Floor; no longer used in 2.0. (This was the actual SWF file that had the room background in it, in Romance I.)
The Weather, or overlay artwork. Used to indicate precipitation.
WRITEME
WRITEME
A placed item can be represented by an encoded string form (“item”), or a JSON structure (“itm2”).
The older style uses a key beginning with item and an unique identifier string, followed by a ~ delimited list of: description, X position, Y position, facing, and (optional) Z position.
If the Z position is omitted, then the value given for Y position should be used for Z instead. (The Y axis used to run across the floor.)
The facing value can be given in radians, or as a special moniker from the set: N NE E SE S SW W NW. See TOOTSVILLE INTERPRET-FACING.
itemfoo123: "flowerPot~100~931~N" itembar456: "flowerPot~100~0~1.23412952423~931"
Placed items, new form: JSON object
{ uuid: position: { x: y: z: }, facing: FACING, baseColor: COLOR, altColor: COLOR, energy: NUMBER, scale: { x: y: z: }, world: { world: lat: long: alt: }, template: { id: name: description: trade: [ "Y", "N", or "X" ], avatar: energyKind: energyMax: onZero: wearSlot: weight: } }
User-positioned items: key: “furn” --- no longer used.
Text items: key: "text" + unique-ID = value
Text to be displayed atop another item. The value might be x~z~string or itm2-id~attachment~string. In the latter form, the text is attached to the model of the “itm2” given at the attachment point.
The attachment point is expected to be of the form tex:TEXTURE-NAME, i.e. a literal prefix tex: followed by the name of the surface texture onto which the text should be drawn.
The facing directions can now be cardinal directions, or radians.
User-placed “furniture” is no longer distinguished from other items in the world.
text items can now be associated with items, rather than having fixed positions of their own.
The itm2 format was added.
Places are regions of the game space defined by polygonal outlines. These are held in Room Variables with names of the form "zone" plus an arbitrary identifier. The contents of the room variable are a key followed by ":" and a series of coördinates.
Each coördinate pair/triplet is given as x,y,z in decimal, literally, like: "100,0,200". When only two coördinates are supplied, they represent x and z. They are separated with "~". To stop one polygon and start on another, give "~~" with no coördinates between.
The key of a Place specifies its purpose. The keys understood by the server include:
This is the default Place kind; any area of ground that is not explicitly part of some other kind of Place is grass.
This demarcates an invisible obstacle --- a collision-only object --- which prevents avatars from entering that space.
This space is part of an in-world game; e.g. a soccer field.
The stuff the moons are made of. (Fight me.)
A bottomless pit
Places (referred to, confusingly, as zones) existed in Romance 1.0, but they came in two forms. Some zones were “burned in” to the Flash “floor” files as invisible polygon layers with a specific naming convention. Others were promulgated by room variables.
The variety of places has been substantially increased.
The default was for the “floor” to be unwalkable, with walkable spaces marked out by zones. The reverse is now true, however, items are now physical boundaries that block player movement.
Prior to 1.1, all floor zones were embedded permanently in the Flash “floor” files.
WRITEME --- there is more to explain about room variables.
See TOOTSVILLE-USER PLACE for an explanation of creating certain places in the game and how they work.
Defined in file src/infinity/new-commands-20.lisp.